package lc_2786_访问数组中的位置使分数最大;

public class Solution {

    public long maxScore(int[] nums, int x) {
        long e = Long.MIN_VALUE, o = Long.MIN_VALUE;
        if ((nums[0] & 1) == 0) {
            e = nums[0];
        } else {
            o = nums[0];
        }
        for (int i = 1; i < nums.length; i++) {
            int num = nums[i];
            long ei = e, oi = o;
            if ((num & 1) == 0) {
                if (e != Long.MIN_VALUE) {
                    ei = e + num;
                }
                if (o != Long.MIN_VALUE) {
                    ei = Math.max(o + num - x, ei);
                }
            } else {
                if (e != Long.MIN_VALUE) {
                    oi = e + num - x;
                }
                if (o != Long.MIN_VALUE) {
                    oi = Math.max(o + num, oi);
                }
            }
            e = ei;
            o = oi;
        }
        return Math.max(e, o);
    }

}